package com.laomu.service;

import java.util.Random;
import java.util.UUID;

import org.apache.shiro.crypto.hash.SimpleHash;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.laomu.dao.impl.UserDAO;
import com.laomu.model.User;

/**
 * 用户业务处理类
 * 
 * @ProjectName: [act-site]
 * @Package: [com.laomu.service.UserService.java]
 * @ClassName: [UserService]
 * @Description: [一句话描述该类的功能]
 * @Author: [老木]
 * @CreateDate: [2016年6月22日 上午10:37:13]
 * @UpdateUser: [老木]
 * @UpdateDate: [2016年6月22日 上午10:37:13]
 * @UpdateRemark: [说明本次修改内容]
 * @Version: [v1.0]
 */
@Service
public class UserService {
	
	@Autowired
	private UserDAO userDAO;

	/**
	 * 用户注册
	 * @param user
	 * @return
	 */
	public int regist(User user) {
		// 验证用户注册账号是否存在
		if(userDAO.findByUsername(user) != null) {
			return -1;
		}
		// 设置随机盐值
		String salt = UUID.randomUUID().toString();
		// 设置随机加密次数
		Integer ecTimes = new Random().nextInt(1000) + 1000;
		System.out.println("salt-->" + salt + "; ecTimes:" + ecTimes);
		// 更新对象数据
		user.setSalt(salt);
		user.setEcTimes(ecTimes);
		user.setPassword(encrypt(user.getPassword(), salt, ecTimes));
		// 保存用户数据
		return userDAO.add(user);
	}
	
	/*
	 * 密码加密管理
	 */
	private String encrypt(String source, String salt, Integer ecTimes) {
		SimpleHash hash = new SimpleHash("MD5", source, salt, ecTimes);
		return hash.toString();
	}
}
